八、RISC | 您所在的位置:网站首页 › risc-v总线 ammb › 八、RISC |
前几篇博文中注释了RISC-V的内核CPU部分,从这篇开始来介绍RISC-V SoC的外设部分。 另外,在最后一个章节中会上传额外添加详细注释的工程代码,完全开源,如有需要可自行下载。 目录 0 RISC-V SoC注解系列文章目录 1. 结构 2. GPIO模块 2.1 输入和输出端口 2.2 代码注解 2.3 GPIO功能实现 0 RISC-V SoC注解系列文章目录 零、RISC-V SoC软核笔记详解——前言 一、RISC-V SoC内核注解——取指 二、RISC-V SoC内核注解——译码 三、RISC-V SoC内核注解——执行 四、RISC-V SoC内核注解——除法(试商法) 五、RISC-V SoC内核注解——中断 六、RISC-V SoC内核注解——通用寄存器 七、RISC-V SoC内核注解——总线 八、RISC-V SoC外设注解——GPIO 九、RISC-V SoC外设注解——SPI接口 十、RISC-V SoC外设注解——timer定时器 十一、RISC-V SoC外设注解——UART模块(终篇) 1. 结构如下图,我们之前介绍的RISC-V内核部分,是图中左上角的RISC-V处理器核。而内核和所有的外设都挂载在总线上,内核通过总线和外设进行数据交互。这六个外设中,RAM和ROM外设已经在之前的博文中进行了解析,因此不再赘述。现在我们来介绍外设中的GPIO外设。 Step1:先设计两个寄存器:gpio_ctrl(控制GPIO的输入和输出模式); gpio_data(存放GPIO的输入或输出数据)。 // 每2位控制1个IO的模式,最多支持16个IO // 0: 高阻,1:输出,2:输入 reg[31:0] gpio_ctrl; // 输入输出数据 reg[31:0] gpio_data; assign reg_ctrl = gpio_ctrl; assign reg_data = gpio_data;Step2:给这两个寄存器规划地址。 // GPIO控制寄存器的地址 localparam GPIO_CTRL = 4'h0; // GPIO数据寄存器的地址 localparam GPIO_DATA = 4'h4;Step3:通过寄存器寻址来,对上述定义的两个寄存器进行写操作,通过配置gpio_ctrl寄存器来实现GPIO的输入输出。 // 写寄存器 always @ (posedge clk) begin if (rst == 1'b0) begin gpio_data |
CopyRight 2018-2019 实验室设备网 版权所有 |